"volume", volume,
"mount", mount,
"file", NULL,
+ "is-network", is_network,
NULL);
insert_row (view, row, is_network);
"volume", NULL,
"mount", mount,
"file", NULL,
+ "is-network", is_network,
NULL);
insert_row (view, row, is_network);
GtkWidget *item;
GMount *mount;
GFile *file;
+ gboolean is_network;
priv = gtk_places_view_get_instance_private (view);
mount = gtk_places_view_row_get_mount (row);
file = gtk_places_view_row_get_file (row);
+ is_network = gtk_places_view_row_get_is_network (row);
priv->popup_menu = gtk_menu_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (priv->popup_menu),
/* Mount/Unmount items */
if (mount)
{
- item = gtk_menu_item_new_with_mnemonic (_("_Unmount"));
+ item = gtk_menu_item_new_with_mnemonic (is_network ? P_("_Disconnect") : P_("_Unmount"));
g_signal_connect (item,
"activate",
G_CALLBACK (unmount_cb),
}
else
{
- item = gtk_menu_item_new_with_mnemonic (_("_Mount"));
+ item = gtk_menu_item_new_with_mnemonic (is_network ? P_("_Connect") : P_("_Mount"));
g_signal_connect (item,
"activate",
G_CALLBACK (mount_cb),
GtkSpinner *busy_spinner;
GtkButton *eject_button;
+ GtkImage *eject_icon;
GtkEventBox *event_box;
GtkImage *icon_image;
GtkLabel *name_label;
GVolume *volume;
GMount *mount;
GFile *file;
+
+ gint is_network : 1;
};
G_DEFINE_TYPE (GtkPlacesViewRow, gtk_places_view_row, GTK_TYPE_LIST_BOX_ROW)
PROP_VOLUME,
PROP_MOUNT,
PROP_FILE,
+ PROP_IS_NETWORK,
LAST_PROP
};
g_value_set_object (value, self->file);
break;
+ case PROP_IS_NETWORK:
+ g_value_set_boolean (value, self->is_network);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
g_set_object (&self->file, g_value_get_object (value));
break;
+ case PROP_IS_NETWORK:
+ gtk_places_view_row_set_is_network (self, g_value_get_boolean (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
G_TYPE_FILE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ properties[PROP_IS_NETWORK] =
+ g_param_spec_boolean ("is-network",
+ P_("Whether the row represents a network location"),
+ P_("Whether the row represents a network location"),
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+
g_object_class_install_properties (object_class, LAST_PROP, properties);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/ui/gtkplacesviewrow.ui");
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, busy_spinner);
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, eject_button);
+ gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, eject_icon);
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, event_box);
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, icon_image);
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, name_label);
gtk_widget_set_visible (GTK_WIDGET (row->busy_spinner), is_busy);
}
+
+gboolean
+gtk_places_view_row_get_is_network (GtkPlacesViewRow *row)
+{
+ g_return_val_if_fail (GTK_IS_PLACES_VIEW_ROW (row), FALSE);
+
+ return row->is_network;
+}
+
+void
+gtk_places_view_row_set_is_network (GtkPlacesViewRow *row,
+ gboolean is_network)
+{
+ if (row->is_network != is_network)
+ {
+ row->is_network = is_network;
+
+ gtk_image_set_from_icon_name (row->eject_icon,
+ is_network ? "network-offline-symbolic" : "media-eject-symbolic",
+ GTK_ICON_SIZE_BUTTON);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (row->eject_button), is_network ? P_("Disconnect") : P_("Unmount"));
+ }
+}